package LeetCode._02算法基础.day04双指针;

import org.junit.Test;

/**
 * @author 挚爱之夕
 * @date 2022 - 03 - 14 - 19:58
 * @Description 给定一个长度为 n 的整数数组height。
 * 有n条垂线，第 i 条线的两个端点是(i, 0)和(i, height[i])。
 * 找出其中的两条线，使得它们与x轴共同构成的容器可以容纳最多的水。
 * 返回容器可以储存的最大水量。
 * @Version 中等
 */
public class _11盛最多水的容器 {
    static int[] height = {1,8,6,2,5,4,8,3,7};
    @Test
    public void solve(){
        int res = maxArea(height);
        System.out.println(res);
    }
    /*by me 双指针*/
    public int maxArea(int[] height) {
        //从最左边和最右边的垂线，向中间靠近
        int left = 0, right = height.length - 1;
        int result = 0;
        //左右垂线的高度
        int leftHeight, rightHeight;
        while(left < right){
            leftHeight = height[left];
            rightHeight = height[right];
            if(leftHeight >= rightHeight){
                result = Math.max(result, (right - left) * rightHeight);
                right--;
            }else{
                result = Math.max(result, (right - left) * leftHeight);
                left++;
            }
        }
        return result;
    }
}
